Op deze pagina wordt een statistische techniek gedemonstreerd aan de hand van een voorbeeld. Meer informatie over hoe je deze pagina kan gebruiken vind je in deze handleiding.
De analyse gebeurt met behulp van R en RStudio. Een inleiding tot deze software vind je hier.
Met deze toets kan je nagaan of er een verschil is tussen twee groepen waarbij de individuele metingen in beide groepen rechtstreeks gelinkt zijn aan elkaar, bijvoorbeeld metingen bij een persoon voor en na een behandeling.
De toets die in dit voorbeeld wordt gedemonstreerd is een statistische techniek die tegenwoordig minder vaak wordt gebruikt.
De reden hiervoor is dat er een beter alternatief is: met een repeated measures analyse kan je indien gewenst meerdere predictoren en meer dan twee metingen analyseren.
In een poging om de interesse voor het vak geschiedenis op te krikken, laat je leerlingen uit het secundair onderwijs een hele les op zoek gaan naar informatie over een zelfgekozen onderwerp. Je verwacht dat deze vorm van zelfgestuurd leren de interesse voor het vak zal verhogen.
Je verzamelt gegevens om je vermoeden te onderzoeken. Je trekt een steekproef van leerlingen en je bevraagt hen voor en na de les.
De data bij dit voorbeeld kan je met het onderstaande commando importeren in R.
mijn_data <- read.csv("https://statlas.ugent.be/datasets/interesse.csv")
Inspecteer de data met de functie str()
.
str(mijn_data)
'data.frame': 23 obs. of 4 variables:
$ leeftijd : int 12 15 18 12 13 16 18 14 17 13 ...
$ geslacht : chr "M" "M" "M" "V" ...
$ score.voor: num 44.1 75.4 67.3 66.1 50.4 62.3 73 84.3 66.8 72.7 ...
$ score.na : num 73.9 77.1 70.1 78 74.2 66.1 73.7 62 82.5 86.8 ...
De hypothesen die bij deze toets horen zijn:
\(H_0: \mu_{na} = \mu_{voor}\) of \(\mu_{na}-\mu_{voor} = 0\)
\(H_a: \mu_{na} > \mu_{voor}\) of \(\mu_{na}-\mu_{voor} > 0\)
De alternatieve hypothese \(H_a\) is hier eenzijdig. Meer uitleg over eenzijdig versus tweezijdig toetsen vind je hier.
In dit voorbeeld wil je de interesse voor de les vergelijken met de interesse na de les. Met de functie summary()
krijg je een eerste indruk van de variabelen in de dataset. Je ziet dat het gemiddelde (Mean
) van de interesse na de les iets hoger ligt dan ervoor. Verderop zullen we ons de vraag stellen of dit verschil aan toeval kan liggen.
summary(mijn_data)
leeftijd geslacht score.voor score.na
Min. :12.00 Length:23 Min. :44.10 Min. :56.60
1st Qu.:13.00 Class :character 1st Qu.:62.65 1st Qu.:69.00
Median :15.00 Mode :character Median :66.80 Median :72.50
Mean :14.96 Mean :66.72 Mean :72.97
3rd Qu.:17.00 3rd Qu.:73.85 3rd Qu.:76.80
Max. :18.00 Max. :84.30 Max. :90.20
Een eerste, visuele indruk van de gegevens kan je verkrijgen door twee boxplots te maken: één voor de meting voor de les en één voor de meting na de les. Met de code hieronder zorg je ervoor dat de beide boxplots in één figuur worden getoond.
boxplot(mijn_data$score.voor, mijn_data$score.na, # Twee vectoren met data, dus er worden twee boxplots gemaakt
main="Boxplots van interesse voor en na de les",
names=colnames(mijn_data)[3:4],
xlab="Moment van meting",
ylab="Interesse in het vak geschiedenis"
)
We vergelijken de verwachtingen in twee groepen. De steekproeven zijn afhankelijk: er is een directe link tussen een meting uit de ene groep en een meting uit de andere groep. De metingen worden namelijk bij dezelfde leerling uitgevoerd.
Deze toets kunnen we uitvoeren met behulp van de functie t.test()
.
De variabele moet tenminste van intervalniveau zijn. Dat is het geval in dit voorbeeld.
Daarnaast:
ofwel moet de steekproef voldoende groot zijn (de vuistregel is \(n \geq 30\)).
dim(mijn_data)[1] # Met deze code vraag je hoeveel rijen er zijn in de dataset
[1] 23
Er zijn slechts 23 observaties (leerlingen), dus de steekproef is niet groot genoeg.
ofwel moet het verschil tussen de beide metingen normaal verdeeld zijn. Dit kan je nagaan door een nieuwe vector aan te maken, die berekend wordt als het verschil score.na - score.voor
. Van die nieuwe vector d
vraag je vervolgens een QQ-plot op. Hier zie je wel enkele afwijkingen, maar slechts bij een kleine minderheid van datapunten. Je kan de toets uitvoeren, maar je zal misschien voorzichtig moeten zijn bij het maken van een conclusie.
d <- mijn_data$score.na - mijn_data$score.voor
qqnorm(d)
qqline(d)
Voor je de toets uitvoert, moet je een significantieniveau \(\alpha\) kiezen.
alpha <- 0.05
Met onderstaande code kan je de toets uitvoeren. Let op het argument paired=TRUE
. Dit is nodig omdat het om afhankelijke steekproeven gaat.
t.test(x=mijn_data$score.na, y=mijn_data$score.voor, alternative="greater", conf.level=1-alpha, paired=TRUE)
Paired t-test
data: mijn_data$score.na and mijn_data$score.voor
t = 2.3143, df = 22, p-value = 0.01519
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
1.612091 Inf
sample estimates:
mean of the differences
6.247826
Je stelt vast dat de p-waarde \(0.015188 < 0.05\). De data bevatten dus voldoende sterk bewijs tegen de nulhypothese. Je verwerpt bijgevolg de nulhypothese op het \(95\%\) significantieniveau.
Merk op dat de p-waarde hier duidelijk kleiner is dan het significantieniveau \(\alpha\). Het is geen randgeval en daardoor kan je vrij veel vertrouwen hebben in de juistheid van je conclusie, ook al was niet perfect voldaan aan de assumpties (zie eerder).
Je kan tot dezelfde conclusie komen aan de hand van het betrouwbaarheidsinterval. Je stelt vast dat de waarde \(0\) zich niet in het \(95\%\) betrouwbaarheidsinterval \([1.612091, \infty{}[\) bevindt. De nulhypothese, die stelt dat er geen verschil is tussen beide groepen, is dus niet compatibel met de geobserveerde data. Je verwerpt bijgevolg de nulhypothese op het \(5\%\) significantieniveau.